package vip.liux.backend.application.service.messaging;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import vip.liux.contracts.shared.enums.Status;
import vip.liux.contracts.shared.enums.messing.ChannelType;

import java.util.Map;

/**
 * 创建通知策略的 Dto
 * 用于接收创建通知策略的请求数据
 */
@Data
public class CreateNotificationPolicyDto {

    /**
     * 策略名称
     */
    @NotBlank(message = "策略名称不能为空")
    @Size(max = 100, message = "策略名称长度不能超过100个字符")
    private String templateName;


    /**
     * 标题
     */
    @NotBlank(message = "标题不能为空")
    private String title;

    /**
     * 策略内容
     */
    @NotBlank(message = "策略内容不能为空")
    private String content;

    /**
     * 消息类型
     *
     * @see ChannelType
     */
    @NotNull(message = "消息类型不能为空")
    private ChannelType channelType;

    /**
     * 变量映射
     */
    private Map<String, Object> variables;

    /**
     * 策略描述
     */
    @Size(max = 255, message = "策略描述长度不能超过255个字符")
    private String description;

    /**
     * 策略状态
     *
     * @see Status
     */
    @NotNull(message = "策略状态不能为空")
    private Status status;
}